$.ajaxSetup({
    dataType: "json",
    type: "POST",
    cache: false,
    beforeSend: function () {
        loading("show");
    },
    error: function (xhr) {
        error(xhr.responseJSON.message);
    },
    complete: function (xhr) {
        loading("hide");

    }
});

var ctx = "";

/**
 * 设值ctx
 * @param path
 */
function addCtx(path) {
    this.ctx = path;
}

/**
 * loading层
 * @param type show hide
 */
function loading(type) {
    var $loadingEl = jQuery('#lyear-loading');
    if (type === 'show') {
        if ($loadingEl.length) {
            $loadingEl.fadeIn(250);
        } else {
            jQuery('body').prepend('<div id="lyear-loading"><div class="spinner-border text-primary" role="status"><span class="sr-only">正在加载中...</span></div></div>');
        }
    } else if (type === 'hide') {
        if ($loadingEl.length) {
            $loadingEl.fadeOut(250);
        }
    }
}

/**
 * bootstrap 提示框
 * @param type 类型 success info warn danger
 * @param message 信息
 */
function tip(type, message) {
    jQuery.notify({
            message: message
        },
        {
            element: 'body',
            type: type,
            allow_dismiss: true,
            newest_on_top: true,
            showProgressbar: false,
            placement: {
                from: 'top',
                align: 'center'
            },
            offset: 20,
            spacing: 10,
            z_index: 10800,
            delay: 1000,
            animate: {
                exit: 'animated fadeOutDown'
            }
        });
}

/**
 * 询问层
 * @param message 提示文字
 * @param func  方法
 */
function confirm(message, func) {
    var index = layer.confirm(message, {
        btn: ['确定', '取消'] //按钮
    }, function () {
        func();
        layer.close(index);
    });
}

/**
 * 成功弹框
 * @param message 提示文字
 */
function success(message) {
    var index = layer.alert(message, {
        icon: 1,
        btn: ['确定'],
        yes: function () {
            layer.close(index);
            closeParent();
        }
    })
}


/**
 * 打开弹窗
 * @param url 地址
 * @param title 标题
 * @param func 关闭后执行的方法
 * @param full 是否全屏
 * @param width 宽度
 * @param height 高度
 */
function open(url, title, func, full, width, height) {
    var index = layer.open({
        type: 2,
        title: title,
        area: [(width == null || width == '') ? '700px' : width, (height == null || height == '') ? '580px' : height],
        content: url,
        end: function () {
            if (func != null && func != undefined) {
                func();
            }

        }

    });
    if (full) {
        layer.full(index);
    }

}

/**
 * 失败弹框
 * @param message 提示文字
 */
function error(message) {
    var index = layer.alert(message, {icon: 2})
}

/**
 * 关闭父弹框
 */
function closeParent() {
    var index = parent.layer.getFrameIndex(window.name);
    parent.layer.close(index);
}

/**
 * 判断是否选择一行
 * @param tbName 表格对象
 */
function check(tb) {

    var selRows = tb.bootstrapTable("getSelections");
    if (selRows.length == 0 || selRows.length > 1) {
        error("请选择一行数据");
        return false;
    }
    return true;
}


/**
 * 获取选中行的
 * @param tb
 */
function getRow(tb) {
    if (check(tb)) {
        var selRows = tb.bootstrapTable("getSelections");
        return selRows[0];
    }
}

/**
 * 销毁表格
 * @param tb
 */
function destory(tb) {
    tb.bootstrapTable('destroy');
}


/**
 * 获取树对象
 * @param treeId
 */
function treeObj(treeId) {
    return $.fn.zTree.getZTreeObj(treeId);
}

/**
 * 异步提交表单并验证
 * @param form
 * @param ax
 * @returns {boolean}
 */
function submit(form, ax) {
    //获取表单下的所有元素 判断元素是否由必填字段
    var formDom = document.getElementById("form");
    for (var i = 0; i < formDom.elements.length; i++) {
        var element = formDom.elements[i];
        if ("INPUT" == element.tagName || "SELECT" == element.tagName) {
            if ($("#" + element.id).attr("required") == "required") {
                if ($("#" + element.id).val() == null || $("#" + element.id).val() == "") {
                    error("必填字段不能为空");
                    return false;
                }
            }
        }
    }
    ax.start();
}